向量排序:match,rank,order,sort,rev
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
花花写于2019.5.29,我发现我的手居然晒黑了,在此感谢防晒衫保护了我的胳膊
先补课一下match函数
match
函数有4个参数。match(x, table, nomatch = NA_integer_, incomparables = NULL)
x
:表示查询对象table
:表示匹配数值,可以是向量形式nomatch
:如果不匹配返回的数值,默认是NAincomparables
:设置table参数中无效的匹配值,默认不设置(NULL)
默认情况下,匹配到的按顺序标记,不匹配的返回NA
x <- c("A","A","B","B","C","D")
match(x,c("A","C","B"))
#[1] 1 1 3 3 2 NA
设置nomatch参数,使不匹配的返回0
match(x,c("A","C","B"),0)
#[1] 1 1 3 3 2 0
设置incomparables参数,忽略C
match(x,c("A","C","B"),incomparables = "C")
#[1]1 1 3 3 NA NA
注意:虽然设置了忽略C,但它还是参与排名的,因此结果中只有1,3,没有2。
如果两个向量元素相同但顺序不同,如何重排
x <- c("A","B","C","D","E")
y <- c("B","D","E","A","C")
match(x,y)
y[match(x,y)]
既然涉及到排序那就再说一下rank,order,sort
其实刚才的例子可以直接sort(y)
解决。
rank(c(3,1,2,5,4))
#[1] 3 1 2 5 4
order(c(3,1,2,5,4))
#[1] 2 3 1 5 4
sort(c(3,1,2,5,4))
#[1] 1 2 3 4 5
rev(c(3,1,2,5,4))
#[1] 4 5 2 1 3
rank的返回值意为:原向量中的第1个元素排第3名,第2个元素排第1名,以此类推。
order的返回值意为:最小值在第2位,次小值在第3位。。。最大值在第4位
sort则比较简单,从小到大派了个序。
rev是将向量中的元素从后到前输出。
更直观的看一下,以刚才的y为例
rank(y)
order(y)
sort(y)
rev(y)
简书:小洁忘了怎么分身
隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!) 国内看B站,教学视频链接:https://m.bilibili.com/space/338686099
国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists友情链接:
点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到jieandze1314@gmail.com,每一条都会看到的哦~